/**
 * <p>
 * 线型图
 * </p>
 * xtype = cceafchart
 * 
 * @module Ext-ux-cceaf-control
 * @class cceaf.control.LineChart
 * @extends Ext.chart.Chart
 * @since 1.0 author nxc
 */
Ext.define('cceaf.control.LineChart', {
			extend : 'Ext.chart.Chart',
			alias : 'widget.cceaflinechart',

			/**
			 * 构造函数
			 * 
			 * @method constructor
			 * @param {attribute}
			 *            config 配置项
			 */
			constructor : function(config) {
				config = config || {};

				cceaf.control.LineChart.superclass.constructor.apply(
						this, arguments);
			},

			/**
			 * store的model名称
			 * 
			 * @property model
			 * @type String
			 * @default 'ChartModel'
			 */
			model : '',

			/**
			 * 横坐标标题
			 * 
			 * @property xTitle
			 * @type String
			 * @default null
			 */
			xTitle : null,

			/**
			 * 纵坐标标题
			 * 
			 * @property yTitle
			 * @type String
			 * @default null
			 */
			yTitle : null,

			/**
			 * 名称字段
			 * 
			 * @property nameField
			 * @type String
			 * @default null
			 */
			nameField : null,

			/**
			 * 数据字段
			 * 
			 * @property dataFields
			 * @type String
			 * @default null
			 */
			dataFields : null,

			/**
			 * 获取数据的action，对应struts action
			 * 
			 * @property action
			 * @type String
			 * @default null
			 */
			action : null,

			/**
			 * 获取坐标轴的最小值,默认为0
			 * 
			 * @property minimum
			 * @type number
			 * @default 0
			 */
			minimum : 0,

			/**
			 * 获取坐标轴的最大值,默认为100
			 * 
			 * @property minimum
			 * @type number
			 * @default 100
			 */
			maximum : 100,

			/**
			 * 是否填充，默认不填充
			 * 
			 * @property isFill
			 * @type boolean
			 * @default false
			 */
			isFill : false,

			/**
			 * 图例显示的位置
			 * 
			 * @property legendPosition
			 * @type string
			 * @default bottom
			 */
			legendPosition : 'bottom',

			/**
			 * showTips
			 */
			showTips : false,

			/**
			 * showTips为true时复写该方法,用于格式化纵坐标的值
			 */
			tipsRender : function(storeitem, item) {
			},

			tipWidth : 120,

			tipHeight : 28,

			// labelRender: function(v) {return v},

			initComponent : function() {
				var config = this;

				var model = config.model;
				if (model == '') {
					cceaf.util.ExtHelper.showInfoDialog('请设置model');
					return;
				}

				var xTitle, yTitle;
				if (config.xTitle) {
					xTitle = config.xTitle;
				}
				if (config.yTitle) {
					yTitle = config.yTitle;
				}

				var nameField, dataFields;
				if (config.nameField) {
					nameField = config.nameField;
				} else {
					cceaf.util.ExtHelper.showInfoDialog('请设置nameField');
					return;
				}
				if (config.dataFields) {
					dataFields = config.dataFields;
				} else {
					cceaf.util.ExtHelper.showInfoDialog('请设置dataFields');
					return;
				}

				var minimum, maximum;
				if (config.minimum) {
					minimum = config.minimum;
				}
				if (config.maximum) {
					maximum = config.maximum;
				}

				var isFill;
				if (config.isFill) {
					isFill = config.isFill;
				}

				var legendPosition;
				if (config.legendPosition) {
					legendPosition = config.legendPosition;
				}

				var showTips, tips;
				if (config.showTips) {
					tips = {
						trackMouse : true,
						width : config.tipWidth,
						height : config.tipHeight,
						renderer : config.tipsRender
					}
				}

				// 定义数据源
				var ds;
				if (config.store) {
					ds = config.store;
				} else {
					ds = new Ext.data.Store({
								proxy : {
									type : 'ajax',
									url : config.action,
									reader : {
										type : 'json',
										root : 'data',
										totalProperty : 'totalCount',
										messageProperty : 'message'
									}
								},
								autoLoad : true,
								autoDestroy : true,
								model : model
							});

				}

				var series = [];
				if (dataFields != null) {
					for (var i in dataFields) {
						series[i] = {
							type : 'line',
							axis : 'left',
							highlight : {
								size : 7,
								radius : 7
							},

							tips : tips,

							markerConfig : {
								type : 'circle',
								size : 4,
								radius : 4,
								'stroke-width' : 0
							},
							/*
							 * label: { display: 'middle', 'text-anchor':
							 * 'middle', field: dataFields[i], orientation:
							 * 'horizontal', color: '#333', font : '25px "Lucida
							 * Grande"',//字体 renderer : config.labelRender },
							 */
							smooth : true,
							fill : isFill,
							title : dataFields[i],// 配置图例字段说明
							xField : nameField,
							yField : dataFields[i]
						}
					}
				}

				Ext.apply(this, {
							store : ds,
							style : 'background:#fff',
							animate : true,
							shadow : true,
							legend : {
								position : legendPosition
							},
							axes : [{
										type : 'Numeric',
										position : 'left',
										fields : dataFields,
										title : yTitle,
										grid : true,
										minimum : minimum,
										maximum : maximum
									}, {
										type : 'Category',
										position : 'bottom',
										fields : nameField,
										title : xTitle
									}],

							series : series

						});

				cceaf.control.LineChart.superclass.initComponent
						.call(this);
			},

			initEvents : function() {
				cceaf.control.LineChart.superclass.initEvents.call(this);
			}

		});